package com.fiap.gestaoPassagens.cliente;

import java.util.ArrayList;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;

import com.fiap.gestaoPassagens.venda.ReservaBean;
import com.fiap.gestaoPassagens.venda.VendaService;


@ViewScoped
@ManagedBean
public class ClienteReservasMB {
	private List<ReservaBean> listaReservasCliente;
	ReservaBean reservaSelecionada;
	ClienteBean cliente=null;
	
	

	public ReservaBean getReservaSelecionada() {
		return reservaSelecionada;
	}

	public void setReservaSelecionada(ReservaBean reservaSelecionada) {
		this.reservaSelecionada = reservaSelecionada;
	}

	public List<ReservaBean> getListaReservasCliente() {
		return listaReservasCliente;
	}

	public void setListaReservasCliente(List<ReservaBean> listaReservasCliente) {
		this.listaReservasCliente = listaReservasCliente;
	}
	
	@PostConstruct
	public void init(){
		listaReservasCliente = new ArrayList<ReservaBean>();
		reservaSelecionada = new ReservaBean();
		cliente = (ClienteBean) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("USUARIO");
		carregarReservasCliente();
	}
	
	
	public void carregarReservasCliente() {
		VendaService vendaService = new VendaService();
		try {
			listaReservasCliente = vendaService.listReservasCliente(cliente);
		} catch (Exception ex) {
			FacesContext context = FacesContext.getCurrentInstance();
			context.addMessage(null,
					new FacesMessage(FacesMessage.SEVERITY_ERROR,
							"OCorreu um erro ao tentar listar as reservas: "+ ex.getMessage(),
							"OCorreu um erro ao tentar listar as reservas: "+ ex.getMessage()));
		}
	}
	
	public void pagarReserva(){
		try{
		VendaService vendaService = new VendaService();
		vendaService.efetuarPagamento(reservaSelecionada);
		}catch(Exception ex){
			FacesContext context = FacesContext.getCurrentInstance();
			context.addMessage(null,
					new FacesMessage(FacesMessage.SEVERITY_ERROR,
							"Erro ao efetuar Pagamento: "+ ex.getMessage(),
							"Erro ao efetuar Pagamento: "+ ex.getMessage()));			
		}
	}
	
	public void cancelarReserva(){
		try{
			VendaService vendaService = new VendaService();
			vendaService.cancelarReserva(reservaSelecionada);
			}catch(Exception ex){
				FacesContext context = FacesContext.getCurrentInstance();
				context.addMessage(null,
						new FacesMessage(FacesMessage.SEVERITY_ERROR,
								"Erro ao cancelar Pagamento: "+ ex.getMessage(),
								"Erro ao cancelar Pagamento: "+ ex.getMessage()));			
			}		
	}
}
